1. Field of the Invention
The present invention relates to techniques for transferring data between components in a system. More specifically, the present invention relates to a method and an apparatus that facilitates transferring data between arbitrary system components without having to preconfigured the components to use a specific data transfer protocol.
2. Related Art
In many system architectures, there is often the need for one component to transfer data to another component. For example, a computer system may need to transfer a file containing a document to a printer, or a file system component may need to move data to a component that operates on files. In another example, a display source component may need to move digital descriptions of a laptop screen to a projector component.
Note that it is impractical to use a single standardized protocol to perform such data transfers because different types of data transfers have different requirements. For example, the requirements for streaming video are vastly different from the requirements for file system transfers. Furthermore, as components continue to develop and change, new requirements and new data transfer protocols frequently arise. Hence, it is impossible for a standardized data transfer protocol to accommodate all possible data transfer requirements for components that are currently being developed or have yet to be developed.
Existing systems solve this problem by maintaining many different types of protocol-specific code or data-type specific code at each component for communicating with other components. For example, referring to FIG. 1, computer system 100 maintains customized code 102 for communicating with different components, including, browser 105, telephone 106, personal digital assistant (PDA) 108, and printer 110. More specifically, computer system 100 can be configured with customized code that understands the HTTP protocol and the HTML data type to communicate with browser 105 on personal computer 104. Computer system 100 can also be configured with customized code that understands the Voice Over IP (VoIP) protocol to communicate with telephone 106. Computer system 100 can additionally be configured with customized code that understands the Bluetooth protocol for communicating with PDA 108, as well as customized code that understands the Internet Printing Protocol and the Postscript data type for communicating with printer 110. Note that although FIG. 1 illustrates data transfers involving devices that are external to computer system 100, data transfers can also take place between components that are internal to computer system 100, for example between an application and a file system.
When a new device is added to computer system 100, a user typically has to install a new driver (or other type of customized code module) that understands a new protocol for communicating with the new device. This driver installation process can be time-consuming and bothersome, especially for inexperienced system users. Some operating systems, such as the Windows™ operating system distributed by the Microsoft corporation of Redmond, Wash., maintain large collections of drivers to communicate with thousands of known devices. This collection of drivers can be extremely useful for communicating with devices that have already been developed. However, the collection cannot contain new drivers that may be required to communicate with new devices. Furthermore, a large amount of time and effort (as well as memory space) is required to maintain thousands of drivers.
Hence, what is needed is a method and an apparatus that enables data to be transferred between arbitrary system components using the specific protocols appropriate to those components, and yet without having to preconfigured the components to use those specific protocols.